package cn.px.service.upms;


import cn.px.dao.dto.upms.SysUserDeptDTO;
import cn.px.dao.entity.upms.SysUserDept;
import cn.px.dao.vo.SysUserDeptVO;
import cn.px.dao.vo.SysUserVO;
import cn.px.service.base.IBaseService;

import java.util.List;

/**
 * @Description 用户与部门 service
 * @author 品讯科技
 * @date 2024-08
 * @Version Copyright (c) 2019,北京乾元坤和科技有限公司 All rights reserved.
 */
public interface SysUserDeptService extends IBaseService<SysUserDept, SysUserDeptDTO> {

    /**
     * 用户区域
     *
     * @param userId  :
     * @param deptIds :
     */
    void saveUserDepts(String userId, List<String> deptIds);

    /**
     * 根据用户ID删除
     *
     * @param userId
     */
    void deleteByUserId(String userId);

    /**
     * 根据用户ID
     *
     * @param userId
     * @return
     */
    List<SysUserDept> selectByUserId(String userId);

    /**
     * 通过deptId查询
     *
     * @param deptId ：
     * @return ：
     */
    List<SysUserDeptVO> selectVOByDeptId(String deptId);

    /**
     * 通过deptId查询
     *
     * @param deptIdList ：
     * @return ：
     */
    List<SysUserDeptVO> selectVOByDeptIdList(List<String> deptIdList);

    /**
     * 通过部门的 code 查询该部门下所有用户
     *
     * @param code ：
     * @return ：
     */
    List<SysUserDeptVO> selectByDept(SysUserDeptDTO code);

    /**
     * 获取指定部门下级及子集的指定类型的用户
     *
     * @param likeDeptCode ：
     * @param identityType ：
     * @return ：
     */
    List<SysUserVO> selectByIdentityTypeLikeDeptCode(String likeDeptCode, Integer identityType);

    /**
     * 获取所属部门指定的设备管理人、设备主管，根据类别判断
     *
     * @param deptId       ：
     * @param identityType ：
     * @return ：
     */
    List<SysUserVO> selectByIdentityTypeDept(String deptId, Integer identityType);


    /**
     * 获取当前人所在部门的设备管理人、设备主管，根据类别判断
     *
     * @param identityType ：
     * @return ：
     */
    List<SysUserVO> selectByUserAndIdentityTypeDept(Integer identityType);
}
